#include"include/dirStack.h"


// 初始化目录栈 
void _dirStack_init(_dirStack_t* s,MYSQL*db,user_t *user){
     
     if(s==NULL){
        return ;
     }
     // 初始化栈
     bzero(s->key,1024*sizeof(int));
     s->_top=-1;
     int id=user->user[0].id;
     //将当前用户的主键入栈
     s->_top++;
     s->key[s->_top]=id;
     //将当前用户路径设置为 /
    char sql[1024]={0};
    snprintf(sql,sizeof(sql),"update file set path='/' where id=%d",id);
    const char *sql_into=sql;
    execDb(sql_into,db);
    return ;
}

// 判断目录栈是否为空
bool _dirStack_empty(_dirStack_t* s){
    if(s==NULL){
        return true;
    }
    else{
        return s->_top==-1;
    }
}

// 将目录入栈
int _dirStack_push(_dirStack_t *s, int key){
    if(s==NULL){
        // 判断栈空
        return -1;
    }
    if(s->_top>=1023){
        return -1;
    }
    ++s->_top;
    s->key[s->_top]=key;
    return 0;
}

//将目录弹栈
int _dirStack_pop(_dirStack_t *s){
    if(_dirStack_empty(s)==true){
        return -1;
    }
    s->key[s->_top]=-1;
    --s->_top;
    return 0;
}

// 获取栈顶元素
int _dirStack_top(_dirStack_t* s){
    if(s==NULL||s->_top==-1){
          return -1;
    }
    return s->key[s->_top];   
}

void _dirStack_destory(_dirStack_t *s){
      // 回收目录栈的内存
      if(s==NULL) return ;
      for(int i=0;i<=s->_top;i++){
        s->key[i]=-1;
      }
      s->_top=-1;
      return ;
}



